## Makefile ：编译课程设计之简单C编译器
# 目标：

TARGET = ccompiler
TEST   = test

SymbolTable = SymbolTable
WordAnalyzer  = WordAnalyzer
GrammarAnalyzer = GrammarAnalyzer
TemporaryCodeGenerator = TemporaryCodeGenerator
# ObjectCodeGenerator = ObjectCodeGenerator
CCompiler     = CCompiler

# 用到的工具软件：
CC = g++ -march=i486
LD = g++
BISON = bison
FLEX   = flex


all : test

test : yyparse.o yylex.o main.o $(SymbolTable).o $(WordAnalyzer).o $(GrammarAnalyzer).o \
	$(TemporaryCodeGenerator).o $(CCompiler).o
	$(LD) -o $(TARGET) yylex.o yyparse.o main.o $(SymbolTable).o $(WordAnalyzer).o $(GrammarAnalyzer).o $(TemporaryCodeGenerator).o $(CCompiler).o 

clean : 
	rm *.o test ccompiler *.tmp -f

yylex.c : cc.l
	$(FLEX) -o yylex.c cc.l 
	
yyparse.c : cc.y
	$(BISON) -o yyparse.c -l -d cc.y
	sed '/int yyparse (void);/c\
int yyparse    (void);' yyparse.c > yyparse.c.tmp
	sed '/yyparse (void)/c\
GrammarAnalyzer::yyparse (void)' yyparse.c.tmp > yyparse.c
	rm yyparse.c.tmp -f
	
.o : .cc
	$(CC) -c $< -o $*.o

# $(SymbolTable).o : $(SymbolTable).cc $(SymbolTable).h
#	$(CC) -c $(SymbolTable).cc -o $(SymbolTable).o

# $(TEST).o : $(TEST).cc
#	$(CC) -c $(TEST).cc -o $(TEST).o





